home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / dev / basic / AmosBlitz_src.lha / Sourcecodes / Reversi.asc < prev    next >
Encoding:
Text File  |  1996-06-13  |  11.6 KB  |  566 lines

  1. Screen Open 0,320,256,16,Lowres : Curs Off : Flash Off : Colour 1,$0
  2. Double Buffer 
  3. Led Off 
  4. Dim BD(16,16)
  5. MAIN:
  6. BD(4,3)=1 : BD(3,4)=1 : BD(3,3)=2 : BD(4,4)=2
  7. Unpack 4 To 0
  8. Screen Display 0,,300,,
  9. Music 1 : Mvolume 63
  10. Set Rainbow 0,0,300,"","","(18,-1,18)"
  11. Rainbow 0,40,40,300
  12. Channel 1 To Rainbow 0 : Amal 1,"M 0,256,50"
  13.  For Y=300 To 44 Step -4
  14.   Wait Vbl 
  15.    Screen Display 0,,Y,,
  16.   Next Y
  17. LL:
  18. Reserve Zone 4
  19. Set Zone 1,59,108 To 241,122
  20. Set Zone 2,59,132 To 241,146
  21. Set Zone 3,49,157 To 251,172
  22. Limit Mouse : Show 
  23. L:
  24. While Mouse Key<>1
  25.  MZ=Mouse Zone
  26. Wend 
  27. If MZ=0 Then Goto L
  28. If MZ=1 Then NUMPLAYERS=1
  29. If MZ=2 Then NUMPLAYERS=2
  30. If MZ=3 Then NUMPLAYERS=0
  31. Fade 3 : Amal On 1 : Colour Back 0 : Reserve Zone 0
  32. For V=63 To 0 Step -1 : Mvolume V : Wait 1 : Next : Rainbow Del 0
  33. Gosub INITILAISE
  34. Gosub DRW_BOARD
  35. LP:
  36. Gosub GT_PLYR_MVE
  37. Gosub CHKMVE
  38. Goto LP
  39. INITILAISE:
  40. Screen Close 0
  41. Unpack 5 To 1 : Screen Hide 1 : Randomize Timer
  42. Set Rainbow 0,7,30,"","","(2,1,1)" : Rainbow 0,0,240,30
  43. Set Rainbow 1,7,30,"","(2,1,1)","" : Rainbow 1,0,270,30
  44. Curs Off : Screen Open 0,640,256,16,Hires
  45. Screen Copy 1 To 0
  46. Screen 0 : Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 : Flash Off 
  47. SX=16 : SY=-2 : Limit Mouse 128,42 To 327,241
  48. WHITES=0 : BLACKS=0 : Double Buffer : Bob Update Off 
  49. Screen Swap : Wait Vbl 
  50. Return 
  51. DRW_BOARD:
  52. Fade 5 To 1 : Wait 50
  53. Flash 15,"(000,4)(0d0,4)"
  54. For MY=3 To 4
  55. For MX=3 To 4
  56. CP=BD(MX,MY)
  57. Gosub DRWPIECE
  58. Next MX
  59. Next MY
  60. CP=1 : OP=2
  61. Return 
  62. GT_PLYR_MVE:
  63. Ink 3,15 : Bar 442,105 To 570,113
  64. Gosub TESTKEY
  65. Gosub FULLBOARD
  66. If PASSED=2 Then Goto FINISH : Rem end of game
  67. Gosub CANYOUGO
  68.  If PASS=1
  69.   Gosub YOUCANTGO
  70.   Gosub CHPLYR
  71. Goto GT_PLYR_MVE
  72. End If 
  73.  If CP=1
  74. Ink 0,15 : Text 442,111,"Weiß ist dran"
  75.  Else 
  76. Ink 0,15 : Text 442,111,"Schwarz ist dran"
  77. End If 
  78. If CP=1 and NUMPLAYERS>0 or(CP=2 and NUMPLAYERS=2)
  79. Show 
  80.  While Mouse Key<>1 : Gosub TESTKEY : Wend 
  81.  MX=X Screen(X Mouse)-SX : MY=Y Screen(Y Mouse)-SY
  82.  MX=(MX/50) : MY=(MY/25)
  83. Else 
  84. Gosub TESTKEY
  85. Gosub COMPMOVE
  86. End If 
  87. If BD(MX,MY)>0
  88.  Bell : Ink 3,15 : Bar 442,105 To 595,113
  89.  Ink 0,15 : Text 442,111,"Unmöglicher Zug" : Wait 25
  90.   Goto GT_PLYR_MVE
  91.  End If 
  92. Return 
  93. CHKMVE:
  94. Gosub TESTKEY
  95. MOVED=0
  96. Gosub CHU : Gosub CHD : Gosub CHL : Gosub CHR
  97. Gosub CHLU : Gosub CHLD : Gosub CHRD : Gosub CHRU
  98.  If MOVED>0
  99.   Gosub CHPLYR
  100.   Dec PASSED : 
  101.   Else 
  102.   Bell : Ink 3,15
  103.   Bar 442,105 To 595,113
  104.   Ink 0,15 : Text 442,111,"Unmöglicher Zug" : Wait 25
  105. End If 
  106. If PASSED<0 Then PASSED=0
  107. Return 
  108. CHU:
  109.  POSS=0 : UP=1
  110. If MY<2 Then Return 
  111. If BD(MX,MY-1)<>OP Then Return 
  112. For C=1 To MY
  113.  If BD(MX,MY-C)=0 Then POSS=0 : Return 
  114.  If BD(MX,MY-C)=OP and POSS<2 Then POSS=1
  115.  If BD(MX,MY-C)=CP and POSS=1 Then POSS=2 : Goto MVU
  116. Next 
  117. Return 
  118. MVU:
  119. BD(MX,MY)=CP
  120. If MOVED=0 Then Gosub DRWPIECE
  121. MOVED=1
  122. While BD(MX,MY-UP)=OP
  123.  BD(MX,MY-UP)=CP
  124.  BNUM=(8*MX)+MY-UP : BX=SX+(MX*50)-13 : BY=SY+((MY-UP)*25)+3
  125. Gosub TURNCOLOUR
  126. Inc UP
  127. Wend 
  128. Return 
  129. CHD:
  130.  POSS=0 : DN=1
  131. If MY>7 Then Return 
  132. If BD(MX,MY+1)<>OP Then Return 
  133. For C=1 To 8-MY
  134.  If BD(MX,MY+C)=0 Then POSS=0 : Return 
  135.  If BD(MX,MY+C)=OP and POSS<2 Then POSS=1
  136.  If BD(MX,MY+C)=CP and POSS=1 Then POSS=2 : Goto MVD
  137. Next 
  138. Return 
  139. MVD:
  140. BD(MX,MY)=CP
  141. If MOVED=0 Then Gosub DRWPIECE
  142. MOVED=1
  143. While BD(MX,MY+DN)=OP
  144.  BD(MX,MY+DN)=CP
  145.  BNUM=(8*MX)+MY+DN : BX=SX+(MX*50)-13 : BY=SY+((MY+DN)*25)+3
  146. Gosub TURNCOLOUR
  147. Inc DN
  148. Wend 
  149. Return 
  150. CHL:
  151.  POSS=0 : LF=1
  152. If MX<2 Then Return 
  153. If BD(MX-1,MY)=0 or BD(MX-1,MY)=CP Then Return 
  154. For C=1 To MX
  155. If BD(MX-C,MY)=0 Then POSS=0 : Return 
  156.  If BD(MX-C,MY)=OP and POSS<2 Then POSS=1
  157.  If BD(MX-C,MY)=CP and POSS=1 Then POSS=2 : Goto MVL
  158. Next 
  159. Return 
  160. MVL:
  161. BD(MX,MY)=CP
  162. If MOVED=0 Then Gosub DRWPIECE
  163. MOVED=1
  164. While BD(MX-LF,MY)=OP
  165.  BD(MX-LF,MY)=CP
  166.  BNUM=8*(MX-LF)+MY : BX=SX+((MX-LF)*50)-13 : BY=SY+(MY*25)+3
  167. Gosub TURNCOLOUR
  168. Inc LF
  169. Wend 
  170. Return 
  171. CHR:
  172.  POSS=0 : RT=1
  173. If MX>7 Then Return 
  174. If BD(MX+1,MY)<>OP Then Return 
  175. For C=1 To 8-MX
  176.  If BD(MX+C,MY)=0 Then POSS=0 : Return 
  177.  If BD(MX+C,MY)=OP and POSS<2 Then POSS=1
  178.  If BD(MX+C,MY)=CP and POSS=1 Then POSS=2 : Goto MVR
  179. Next 
  180. Return 
  181. MVR:
  182. BD(MX,MY)=CP
  183. If MOVED=0 Then Gosub DRWPIECE
  184. MOVED=1
  185. While BD(MX+RT,MY)=OP
  186.  BD(MX+RT,MY)=CP
  187.  BNUM=(8*(MX+RT))+MY : BX=SX+((MX+RT)*50)-13 : BY=SY+(MY*25)+3
  188. Gosub TURNCOLOUR
  189. Inc RT
  190. Wend 
  191. Return 
  192. CHLU:
  193.  POSS=0 : LU=1
  194. If MY<1 or MX<1 Then Return 
  195. If BD(MX-1,MY-1)<>OP Then Return 
  196. For C=1 To 9
  197. If MY-C<0 or MX-C<0 Then Return 
  198. If BD(MX-C,MY-C)=0 Then POSS=0 : Return 
  199.  If BD(MX-C,MY-C)=OP and POSS<2 Then POSS=1
  200.  If BD(MX-C,MY-C)=CP and POSS=1 Then POSS=2 : Goto MVLU
  201. Next 
  202. Return 
  203. MVLU:
  204. BD(MX,MY)=CP
  205. If MOVED=0 Then Gosub DRWPIECE
  206. MOVED=1
  207. While BD(MX-LU,MY-LU)=OP
  208.  BD(MX-LU,MY-LU)=CP
  209.  BNUM=(8*(MX-LU))+MY-LU : BX=SX+((MX-LU)*50)-13 : BY=SY+((MY-LU)*25)+3
  210. Gosub TURNCOLOUR
  211. Inc LU
  212. Wend 
  213. Return 
  214. CHLD:
  215.  POSS=0 : LD=1
  216. If MY=7 or MX=0 Then Return 
  217. If BD(MX-1,MY+1)<>OP Then Return 
  218. For C=1 To 9
  219. If MY+C>7 or MX-C<0 Then Return 
  220. If BD(MX-C,MY+C)=0 Then POSS=0 : Return 
  221.  If BD(MX-C,MY+C)=OP and POSS<2 Then POSS=1
  222.  If BD(MX-C,MY+C)=CP and POSS=1 Then POSS=2 : Goto MVLD
  223. Next 
  224. Return 
  225. '
  226. MVLD:
  227. BD(MX,MY)=CP
  228. If MOVED=0 Then Gosub DRWPIECE
  229. MOVED=1
  230. While BD(MX-LD,MY+LD)=OP
  231.  BD(MX-LD,MY+LD)=CP
  232.  BNUM=(8*(MX-LD))+MY+LD : BX=SX+((MX-LD)*50)-13 : BY=SY+((MY+LD)*25)+3
  233. Gosub TURNCOLOUR
  234. Inc LD
  235. Wend 
  236. Return 
  237. CHRD:
  238.  POSS=0 : RD=1
  239. If MX=7 or MY=7 Then Return 
  240. If BD(MX+1,MY+1)<>OP Then Return 
  241. For C=1 To 9
  242. If MY+C>7 or MX+C>7 Then Return 
  243. If BD(MX+C,MY+C)=0 Then POSS=0 : Return 
  244.  If BD(MX+C,MY+C)=OP and POSS<2 Then POSS=1
  245.  If BD(MX+C,MY+C)=CP and POSS=1 Then POSS=2 : Goto MVRD
  246. Next 
  247. Return 
  248. MVRD:
  249. BD(MX,MY)=CP
  250. If MOVED=0 Then Gosub DRWPIECE
  251. MOVED=1
  252. While BD(MX+RD,MY+RD)=OP
  253.  BD(MX+RD,MY+RD)=CP
  254.  BNUM=(8*(MX+RD))+MY+RD : BX=SX+((MX+RD)*50)-13 : BY=SY+((MY+RD)*25)+3
  255. Gosub TURNCOLOUR
  256. Inc RD
  257. Wend 
  258. Return 
  259. CHRU:
  260.  POSS=0 : RU=1
  261. If MX=7 or MY=0 Then Return 
  262. If BD(MX+1,MY-1)<>OP Then Return 
  263. For C=1 To 9
  264. If MY-C<0 or MX+C>7 Then Return 
  265. If BD(MX+C,MY-C)=0 Then POSS=0 : Return 
  266.  If BD(MX+C,MY-C)=OP and POSS<2 Then POSS=1
  267.  If BD(MX+C,MY-C)=CP and POSS=1 Then POSS=2 : Goto MVRU
  268. Next 
  269. Return 
  270. MVRU:
  271. BD(MX,MY)=CP
  272. If MOVED=0 Then Gosub DRWPIECE
  273. MOVED=1
  274. While BD(MX+RU,MY-RU)=OP
  275.  BD(MX+RU,MY-RU)=CP
  276. BNUM=(8*(MX+RU))+MY-RU : BX=SX+((MX+RU)*50)-13 : BY=SY+((MY-RU)*25)+3
  277. Gosub TURNCOLOUR
  278. Inc RU
  279. Wend 
  280. Return 
  281. CHPLYR:
  282. Swap OP,CP
  283. Return 
  284. DRWPIECE:
  285. BX=SX+(MX*50)-13
  286. BY=SY+(MY*25)+3
  287. If CP=1
  288. Inc WHITES
  289. For A=6 To 1 Step -1
  290. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  291. Paste Bob BX,BY,A
  292. Screen Copy Logic,BX,BY-1,BX+45,BY+23 To Physic,BX,BY-1
  293. Next : Shoot 
  294. Else 
  295. Inc BLACKS
  296. For A=6 To 11
  297. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  298. Paste Bob BX,BY,A
  299. Screen Copy Logic,BX,BY-1,BX+45,BY+23 To Physic,BX,BY-1
  300. Next : Shoot 
  301. End If 
  302. Gosub SHSCORE
  303. Return 
  304. '
  305. TURNCOLOUR:
  306. If CP=2
  307. Inc BLACKS : Dec WHITES
  308. For B=1 To 11
  309. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  310.  Paste Bob BX,BY,B
  311. Screen Copy Logic,BX-1,BY-1,BX+45,BY+23 To Physic,BX-1,BY-1
  312.  Next : Shoot 
  313. Else 
  314. Inc WHITES : Dec BLACKS
  315. For B=11 To 1 Step -1
  316. Screen Copy 1,BX,BY,BX+44,BY+22 To 0,BX,BY
  317. Paste Bob BX,BY,B
  318. Screen Copy Logic,BX-1,BY-1,BX+45,BY+23 To Physic,BX-1,BY-1
  319. Next : Shoot 
  320. End If 
  321. Gosub SHSCORE
  322. Return 
  323. SHSCORE:
  324. Ink 3,15
  325. Bar 556,53 To 580,63
  326. Bar 556,75 To 580,86
  327. Gr Writing 0
  328. Ink 0,3
  329. Text 557,63,Str$(BLACKS)
  330. Text 557,86,Str$(WHITES)
  331. Screen Copy Logic To Physic
  332. Return 
  333. COMPMOVE:
  334.  BESTX=0 : BESTY=0 : BEST=0
  335.  MOVED=0 : 
  336.  CORNER=0 : GOFORIT=0
  337.   For MX=0 To 8 Step 7
  338.   For MY=0 To 8 Step 7
  339. MOVED=0
  340. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  341. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  342. If MOVED>1 Then Return 
  343. If MOVED>0 and Rnd(1)=0 Then Return 
  344. Next MY
  345. Next MX
  346. For MX=0 To 8 Step 7
  347. For MY=0 To 7
  348. MOVED=0
  349. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  350. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  351. If MOVED>3 Then Return 
  352. Next MY
  353. Next MX
  354.  For MX=0 To 7
  355.  For MY=0 To 7
  356. MOVED=0
  357. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  358. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  359. If MOVED>BEST Then BEST=MOVED : BESTX=MX : BESTY=MY
  360. Next MY
  361. Next MX
  362. MX=BESTX : MY=BESTY
  363. Return 
  364. CANYOUGO:
  365. PASS=1
  366. MOVED=0
  367.  For MX=0 To 7
  368.  For MY=0 To 7
  369. Gosub HU : Gosub HD : Gosub HL : Gosub HR
  370. Gosub HLU : Gosub HLD : Gosub HRD : Gosub HRU
  371.  If MOVED>0 Then PASS=0
  372. Next MY
  373. Next MX
  374. Return 
  375. YOUCANTGO:
  376. Ink 3,15 : Bell 
  377. Bar 442,105 To 570,113
  378. Ink 0,15
  379. Text 442,111,"Kein möglicher Zug"
  380. Inc PASSED
  381. Return 
  382. HU:
  383.  POSS=0 : UP=1
  384. If BD(MX,MY)>0 Then Return 
  385. If MY<2 Then Return 
  386. If BD(MX,MY-1)<>OP Then Return 
  387. For C=1 To MY
  388.  If BD(MX,MY-C)=0 Then POSS=0 : Return 
  389.  If BD(MX,MY-C)=OP and POSS<2 Then POSS=1
  390.  If BD(MX,MY-C)=CP and POSS=1 Then POSS=2 : Goto VU
  391. Next 
  392. Return 
  393. '
  394. VU:
  395. While BD(MX,MY-UP)=OP
  396. Inc UP
  397. Inc MOVED
  398. Wend 
  399. Return 
  400. '
  401. '
  402. HD:
  403. If BD(MX,MY)>0 Then Return 
  404.  POSS=0 : DN=1
  405. If MY>7 Then Return 
  406. If BD(MX,MY+1)<>OP Then Return 
  407. For C=1 To 8-MY
  408.  If BD(MX,MY+C)=0 Then POSS=0 : Return 
  409.  If BD(MX,MY+C)=OP and POSS<2 Then POSS=1
  410.  If BD(MX,MY+C)=CP and POSS=1 Then POSS=2 : Goto VD
  411. Next 
  412. Return 
  413. '
  414. VD:
  415. While BD(MX,MY+DN)=OP
  416. Inc DN
  417. Inc MOVED
  418. Wend 
  419. Return 
  420. '
  421. HL:
  422. If BD(MX,MY)>0 Then Return 
  423.  POSS=0 : LF=1
  424. If MX<2 Then Return 
  425. If BD(MX-1,MY)=0 or BD(MX-1,MY)=CP Then Return 
  426. For C=1 To MX
  427. If BD(MX-C,MY)=0 Then POSS=0 : Return 
  428.  If BD(MX-C,MY)=OP and POSS<2 Then POSS=1
  429.  If BD(MX-C,MY)=CP and POSS=1 Then POSS=2 : Goto VL
  430. Next 
  431. Return 
  432. '
  433. VL:
  434. While BD(MX-LF,MY)=OP
  435. Inc LF
  436. Inc MOVED
  437. Wend 
  438. Return 
  439. '
  440. HR:
  441. If BD(MX,MY)>0 Then Return 
  442.  POSS=0 : RT=1
  443. If MX>7 Then Return 
  444. If BD(MX+1,MY)<>OP Then Return 
  445. For C=1 To 8-MX
  446.  If BD(MX+C,MY)=0 Then POSS=0 : Return 
  447.  If BD(MX+C,MY)=OP and POSS<2 Then POSS=1
  448.  If BD(MX+C,MY)=CP and POSS=1 Then POSS=2 : Goto VR
  449. Next 
  450. Return 
  451. '
  452. VR:
  453. While BD(MX+RT,MY)=OP
  454. Inc RT
  455. Inc MOVED
  456. Wend 
  457. Return 
  458. '  
  459. HLU:
  460. If BD(MX,MY)>0 Then Return 
  461.  POSS=0 : LU=1
  462. If MY<1 or MX<1 Then Return 
  463. If BD(MX-1,MY-1)<>OP Then Return 
  464. For C=1 To 9
  465. If MY-C<0 or MX-C<0 Then Return 
  466. If BD(MX-C,MY-C)=0 Then POSS=0 : Return 
  467.  If BD(MX-C,MY-C)=OP and POSS<2 Then POSS=1
  468.  If BD(MX-C,MY-C)=CP and POSS=1 Then POSS=2 : Goto VLU
  469. Next 
  470. Return 
  471. '
  472. VLU:
  473. While BD(MX-LU,MY-LU)=OP
  474. Inc LU
  475. Inc MOVED
  476. Wend 
  477. Return 
  478. '
  479. HLD:
  480. If BD(MX,MY)>0 Then Return 
  481.  POSS=0 : LD=1
  482. If MY=7 or MX=0 Then Return 
  483. If BD(MX-1,MY+1)<>OP Then Return 
  484. For C=1 To 9
  485. If MY+C>7 or MX-C<0 Then Return 
  486. If BD(MX-C,MY+C)=0 Then POSS=0 : Return 
  487.  If BD(MX-C,MY+C)=OP and POSS<2 Then POSS=1
  488.  If BD(MX-C,MY+C)=CP and POSS=1 Then POSS=2 : Goto VLD
  489. Next 
  490. Return 
  491. '
  492. VLD:
  493. While BD(MX-LD,MY+LD)=OP
  494. Inc LD
  495. Inc MOVED
  496. Wend 
  497. Return 
  498. '
  499. HRD:
  500. If BD(MX,MY)>0 Then Return 
  501.  POSS=0 : RD=1
  502. If MX=7 or MY=7 Then Return 
  503. If BD(MX+1,MY+1)<>OP Then Return 
  504. For C=1 To 9
  505. If MY+C>7 or MX+C>7 Then Return 
  506. If BD(MX+C,MY+C)=0 Then POSS=0 : Return 
  507.  If BD(MX+C,MY+C)=OP and POSS<2 Then POSS=1
  508.  If BD(MX+C,MY+C)=CP and POSS=1 Then POSS=2 : Goto VRD
  509. Next 
  510. Return 
  511. '
  512. VRD:
  513. While BD(MX+RD,MY+RD)=OP
  514. Inc RD
  515. Inc MOVED
  516. Wend 
  517. Return 
  518. '
  519. HRU:
  520. If BD(MX,MY)>0 Then Return 
  521.  POSS=0 : RU=1
  522. If MX=7 or MY=0 Then Return 
  523. If BD(MX+1,MY-1)<>OP Then Return 
  524. For C=1 To 9
  525. If MY-C<0 or MX+C>7 Then Return 
  526. If BD(MX+C,MY-C)=0 Then POSS=0 : Return 
  527.  If BD(MX+C,MY-C)=OP and POSS<2 Then POSS=1
  528.  If BD(MX+C,MY-C)=CP and POSS=1 Then POSS=2 : Goto VRU
  529. Next 
  530. Return 
  531. '
  532. VRU:
  533. While BD(MX+RU,MY-RU)=OP
  534. Inc RU
  535. Inc MOVED
  536. Wend 
  537. Return 
  538. FINISH:
  539. Fade 5 : Wait 75
  540. Screen 1 : Screen Show 1 : Screen To Front 1
  541. Paper 0 : Pen 1 : Curs Off : Cls 0 : Fade 5 To 1 : Wait 50
  542. Locate 10,10 : Print "Weiß: ";WHITES
  543. Locate 10,12 : Print "Schwarz: ";BLACKS : Print : Print : Print 
  544. If WHITES>BLACKS Then Print "Weiß hat gewonnen!"
  545. If BLACKS>WHITES Then Print "Schwarz hat gewonnen!"
  546. If WHITES=BLACKS Then Print "Unentschieden!"
  547. Locate 1,20 : Centre "Drück eine Maustaste"
  548. Rainbow Del 
  549. While Mouse Key=0 : Wend 
  550. For XX=0 To 7 : For YY=0 To 7 : BD(XX,YY)=0 : Next YY : Next XX
  551. FULLBOARD=1 : PASSED=0 : MOVED=0 : POSS=0 : MX=0 : MY=0 : BX=0 : BY=0 : CP=1 : OP=2
  552. Fade 2 : Wait 30 : Screen Close 1 : Goto MAIN
  553. FULLBOARD:
  554. FULLBOARD=1
  555. For XX=0 To 7
  556. For YY=0 To 7
  557. If BD(XX,YY)=0 Then FULLBOARD=0
  558. Next YY
  559. Next XX
  560. If FULLBOARD=1 Then PASSED=2
  561. Return 
  562. TESTKEY:
  563. I$=Inkey$ : If I$="Q" Then Bell : Goto FINISH
  564. If I$="q" Then Bell : Goto FINISH
  565. Return 
  566.